package com.shop.zkmall.app.producer;

import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.HashMap;


@Slf4j
@Component
public class NormalRocketProducer {

    @Autowired
    private RocketMQTemplate rocketMQTemplate;

    public void sendMessage() {
        HashMap<String, String> stringStringHashMap = new HashMap<>();
        stringStringHashMap.put("phone", "15038309333");


        // 发送普通消息
         rocketMQTemplate.convertAndSend("create-user-topic", stringStringHashMap);

        // 发送带tag的消息
//        Message<String> message = MessageBuilder.withPayload("test").setHeader(RocketMQHeaders.TAGS, "test-tag").build();
//        rocketMQTemplate.send("create-user-topic", message);

        // 延迟消息
        // RocketMQ预定义了一些延迟等级，每个等级对应不同的延迟时间范围。这些等级从1到18，分别对应1s、5s、10s、30s、1m、2m、3m、4m、5m、6m、7m、8m、9m、10m、20m、30m、1h、2h的延迟时间。
//        org.apache.rocketmq.common.message.Message msg = new org.apache.rocketmq.common.message.Message();
//        msg.setDelayTimeLevel(3);
//        try {
//            rocketMQTemplate.getProducer().send(msg);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
    }

    public void sendMessageTo() {
        HashMap<String, String> map = new HashMap<>();
        map.put("phone", "15038309333");
        byte[] jsonBytes = JSONObject.toJSONBytes(map);
        // 发送普通消息
//         rocketMQTemplate.convertAndSend("create-user-topic", stringStringHashMap);

        // 发送带tag的消息
//        Message<String> message = MessageBuilder.withPayload("test").setHeader(RocketMQHeaders.TAGS, "test-tag").build();
//        rocketMQTemplate.send("create-user-topic", message);

        // 延迟消息
        // RocketMQ预定义了一些延迟等级，每个等级对应不同的延迟时间范围。这些等级从1到18，分别对应1s、5s、10s、30s、1m、2m、3m、4m、5m、6m、7m、8m、9m、10m、20m、30m、1h、2h的延迟时间。
     //   org.apache.rocketmq.common.message.Message msg = new org.apache.rocketmq.common.message.Message(RocketConstants.ORDER_TIMEOUT_TOPIC, "tag1",jsonBytes);
//        msg.setDelayTimeLevel(4);
//        try {
//            rocketMQTemplate.getProducer().send(msg);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
    }
}
